# @Version : 1.0
# @Author  : 刘宇
# @File    : 20_str_operations.py
# @Time    : 2025/10/13 14:40

str_names = "jack tom mary hsp nono tom"
# len(str): 字符串的长度，也就是包含多少个字符
print(f"{str_names}有 {len(str_names)}个字符")

# str.replace(old,new[,count]): 返回字符串的副本，其中出现的所有子字符 old都将替换为 new

"""
    返回字符串的副本————表示原来的字符串不变，而是返回一个新字符串
"""

# 需求：将"jack" 替换成"杰克"，只替换一个
str_names_new = str_names.replace("jack", "杰克", 1)
print("str_names_new:", str_names_new)  # 杰克 tom mary hsp nono tom
print("str_names:", str_names)  # jack tom mary hsp nono tom

# str.split(sep=None, maxsplit=-1):
# 返回一个由字符串内单词组成的列表，使用sep作为分隔字符串。 如果给出了maxsplit
# 则最多进行maxsplit 次拆分（因此，列表最多会有 maxsplit+1 个元素）。如果maxsplit
# 未指定或为 -1，则不限制拆分次数（进行所有可能的拆分）
#
# 需求对str_names按照" "进行分割
str_names_split = str_names.split(" ")
print(f"str_names_split 内容是{str_names_split} 类型是: {type(str_names_split)}")
# ['jack', 'tom', 'mary', 'hsp', 'nono', 'tom']    <class 'list'>
print(f"str_name 内容是 {str_names}")  # jack tom mary hsp nono tom

# str.count(sun): 统计指定字符串在字符串中出现的次数
# 统计tom在字符串出现的次数
print("tom在字符串出现的次数:", str_names.count("tom"))  # 2

# str.index(sub): 从字符串中找出指定字符串第一个匹配项的索引位置
print(f"tom出先的索引:{str_names.index('tom')}")  # 5（空格也算位置）

# str.strip([chars]): 返回原字符串的副本，移除其中的前导和末尾字符。 chars 为指定要移除字符的字符串
# 这个方法，通常可以用于除去前后的空格，或者去掉指定的某些字符
# 需求：去掉字符前后的空格
str_names_strip = str_names.strip(" ")
print("str_names_strip:", str_names_strip)

# str.lower(): 返回原字符串小写的副本，不影响原来的字符
# 需求: 将字符串字母全部改成小写
str_names = "hspHSP"
str_names_lower = str_names.lower()
print("str_names_lower:", str_names_lower)  # hsphsp
print("str_names:", str_names)  # hspHSP


# str.upper(): 返回原字符串小写的副本，不影响原来的字符
# 需求: 将字符串字母全部改成小写
str_names = "hspHSP"
str_names_upper = str_names.upper()
print("str_names_upper:", str_names_upper)  # HSPHSP
print("str_names:", str_names)  # hspHSP